package com.ww.springboot.sharding.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ww.springboot.sharding.entity.OutOrderDetailsEntity;
import com.ww.springboot.sharding.vo.FindOrderVO;
import com.ww.springboot.sharding.vo.OrderReturnVO;
import com.ww.springboot.sharding.vo.OutOrderDetailsVO;
import com.ww.springboot.sharding.vo.PageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 订单详情表
 * 2020年6月30日16:47:04
 *
 * @author MyPC
 */
@Mapper
public interface OutOrderDetailsMapper extends BaseMapper<OutOrderDetailsEntity> {
    /**
     * 添加OutOrderDetails表
     *
     * @param list
     */
    void insertOutOrderDetails(List<OutOrderDetailsEntity> list);

    /**
     * 修改OutOrderDetails表
     *
     * @param list
     */
    void updateOutOrderDetails(List<OutOrderDetailsEntity> list);

    /**
     * 修改OutOrderDetails表
     *
     * @param obj
     */
    void updateOutOrderDetailsObj(OutOrderDetailsEntity obj);

    /**
     * 退件订单
     *
     * @param oId
     */
    void outOrderDetailsUpdate(String oId);

    /**
     * 退件订单
     *
     * @param list
     */
    void orderReturnUpdate(List<OrderReturnVO> list);

    /**
     * 分页查询订单总数
     */
    int outOrderDetailsSize(FindOrderVO findOrderVO);

    /**
     * 分页查询订单详情(订单-物流商-发货方式-轨迹表)
     */
    List<OutOrderDetailsVO> selectOutOrderDetailsPage(@Param("findOrderVO") FindOrderVO findOrderVO, @Param("page") PageVO page);

    /**
     * 进行订单导出execl
     */
    List<OutOrderDetailsVO> orderDetailsExcel(FindOrderVO findOrderVO);

    /**
     * 进行订单导出execl
     */
    List<OutOrderDetailsVO> orderFileExcel(@Param("start") Date start, @Param("end") Date end, @Param("page") int page);

    /**
     * 定时任务分页查询订单表
     *
     * @param startTime   开始时间
     * @param endTime     结束时间
     * @param pageStart   分页参数- 开始条数
     * @param pageSize    分页参数- 每页数量
     * @param traceStatus 轨迹状态
     * @return
     */
    List<OutOrderDetailsEntity> findOrders(@Param("startTime") Date startTime,
                                           @Param("endTime") Date endTime,
                                           @Param("pageStart") Integer pageStart,
                                           @Param("pageSize") Integer pageSize,
                                           @Param("traceStatus") List<Integer> traceStatus);


    /**
     * 定时任务分页查询订单表
     *
     * @param diId        物流商id
     * @param dgId        发货方式id
     * @param startTime   开始时间
     * @param endTime     结束时间
     * @param pageStart   分页参数- 开始条数
     * @param pageSize    分页参数- 每页数量
     * @param traceStatus 轨迹状态
     * @return
     */
    List<OutOrderDetailsEntity> findOrderById(
            @Param("diId") Long diId,
            @Param("dgId") Long dgId,
            @Param("startTime") Date startTime,
            @Param("endTime") Date endTime,
            @Param("pageStart") Integer pageStart,
            @Param("pageSize") Integer pageSize,
            @Param("traceStatus") List<Integer> traceStatus);
}
